package org.wlh.contra.config;

import java.util.Map;

/**
 * 环境变量示例: _KEY  可以通过main传参改变.
 *              spring_prot = 8080             # spring的内容.
 *              spring_prot_KEY  = server.port # 前缀_KEY 对应spring的key.
 *             则执行以下语句:
 *                 System.setProperty("server.port","8080");
 *             //
 *               key =  spring_prot
 *               spring_prot_KEY  = server.port
 *               value = 8080
 */
public class EnvToSystem {
    public static void main(String[] args) {
        //
        String keyName = "_KEY";
        if(args != null &&  args.length > 1 ){
            keyName = args[0];
        }
        System.err.println("通过环境变量替换System.Propertie的内容。实现配置统一\n");
        Map<String, String> getenv = System.getenv();
        // 遍历环境变量.
        for (Map.Entry<String, String> entry : getenv.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            String springKey = getenv.get(key + keyName);
            /*


             */
            if(notBlank(springKey) && notBlank(value)){
                System.setProperty(springKey.trim(),value);
                System.out.println(String.format("循环的key[%s],覆盖System的key[%s],覆盖之后的value[%s]",key,springKey,value));
            }
        }
    }

    public static boolean notBlank(String str){
        return  str != null && str.trim().length() > 0;
    }
}
